// 处理DeepSeek API的工具函数
import { getLastWeekDiaries } from '../models/diary';

// API密钥和URL配置（实际开发中应放在服务器端，这里仅作演示）
const API_KEY = 'sk-981abeada45f4a489fafcd5c6ea89570';
const API_URL = 'https://api.deepseek.com/chat/completions';

interface ChoiceItem {
  message: {
    content: string;
  };
}

interface ApiResponseData {
  choices?: ChoiceItem[];
}

// 生成周记内容
export const generateWeeklyStory = (): Promise<string> => {
  return new Promise((resolve, reject) => {
    // 获取本周的日记内容
    const weekDiaries = getLastWeekDiaries();

    if (weekDiaries.length === 0) {
      reject(new Error('本周没有任何日记内容'));
      return;
    }

    // 提取日记内容和心情
    const diaryTexts = weekDiaries.map(diary =>
      `日期：${diary.date}，内容：${diary.content}，心情：${diary.mood}`
    ).join('\n');

    // 构建提示词
    const prompt = `以下是用户最近一周记录的日记内容和心情：\n${diaryTexts}\n\n请根据这些日记内容，生成一个温暖有趣的小故事，将这些碎片化的记录串联起来，字数控制在100字左右，语言风格温馨轻松。`;

    // 调用API
    wx.request({
      url: API_URL,
      method: 'POST',
      header: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${API_KEY}`,
      },
      data: {
        model: 'deepseek-chat',
        messages: [
          { role: 'system', content: '你是一个温暖有趣的故事讲述者。' },
          { role: 'user', content: prompt },
        ],
        stream: false, // 确认不使用流式传输
      },
      success: (res: any) => {
        try {
          const responseData = res.data as ApiResponseData;
          if (responseData && responseData.choices && responseData.choices.length > 0) {
            const story = responseData.choices[0].message.content.trim();
            resolve(story);
          } else {
            reject(new Error('生成故事失败，API返回格式异常'));
          }
        } catch (error) {
          reject(new Error('解析API响应失败'));
        }
      },
      fail: (err: any) => {
        console.error('调用API失败', err);
        reject(new Error('调用API失败，请检查网络连接或域名白名单设置'));
      }
    });
  });
};
